// pages/MusicPlayback/MusicPlayback.js
import request from '../../utils/request'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isswitch: true, //开关音乐
    song: [], // 音乐mid
    songimage: '', // 图片
    images: 'http://5b0988e595225.cdn.sohucs.com/images/20200322/82948cdc4da74564a6968b471783444c.jpeg',
    isplay: true, //有无音乐源
    musicLinks: '', // 音乐链接
    songInfo: '' //音乐详情
  },
  // 点击播放回调
  isPlay() {
    // 判断有没有音乐链接
    if (this.data.isplay) {
      // 定义播放功能  
      // this.data.musicLinks 音乐链接
      console.log(this.data.musicLinks);
      // 判断是否拿到音源
      if(!this.data.musicLinks){
        wx.showToast({
          title: 'vip歌曲',
          icon: 'none',
          duration: 5000
        })
        return
      }
      this.BackgroundAudioManager.src = this.data.musicLinks //拿到地址自动播放
      // this.data.songInfo.data.extras.name 音乐名字
      this.BackgroundAudioManager.title = this.data.songInfo.data.extras.name
      // 保存当前歌曲是否在播放的状态
      this.appInstance.globalData.isMusicPlay=this.data.isswitch
      this.appInstance.globalData.musicIdL=this.data.song[0]
      // 切换播放
      let isswitch = this.data.isswitch
      this.setData({
        isswitch: !isswitch
      })
      // 点击播放按钮是播放
      if (this.data.isswitch) {
        this.BackgroundAudioManager.pause() // 暂停
      } else {

        this.BackgroundAudioManager.play() // 播放
      }
    } else {
      wx.showToast({
        title: '找不到音乐源!',
        icon: 'none',
        duration: 5000
      })
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    Object.keys(options)[0] && this.getOnload(options)

    // 播放功能==============
    // 定义背景音乐播放api
    this.BackgroundAudioManager = wx.getBackgroundAudioManager()
    // 监听音乐播放时的回调
    this.BackgroundAudioManager.onPlay(() => {
      this.setData({
        isswitch: false
      })
    })
    //监听音乐暂停时的回调
    this.BackgroundAudioManager.onPause(() => {
      this.setData({
        isswitch: true
      })
    })
    //监听音乐停止时的回调
    this.BackgroundAudioManager.onStop(() => {
      this.setData({
        isswitch: true
      })
    })
    // console.log(appInstance);
  },

  async getOnload(options) {
    // 拿到传过来的query参数的songmid
    let songmid = Object.keys(options)[0]
    console.log(songmid);
    //  从服务器通过songmid拿到音乐的播放链接
    let songdata = await request('/song/urls', {
      id: songmid
    })
    console.log(songdata);
    // 判断是否要vip音源
    if(songdata.result == 200){
      wx.showToast({
        title: 'vip歌曲',
        icon: 'none',
        duration: 5000
      })
      return
    }
    //  判断是否有音源
    if (!Object.keys(songdata.data).length) {
      // 没有歌源时暂停播放
      this.setData({
        isplay: false,
        isswitch: true
      })
      wx.showToast({
        title: '找不到音乐源!',
        icon: 'none',
        duration: 5000
      })
      return
    } else {
      this.setData({
        isplay: true, // 是否有音乐源
        musicLinks: songdata.data[songmid] // 音乐的mid
      })
      
    }
    //  console.log(songdata);
    //  从服务器通过songmid获取当前歌曲的详情
    let songInfo = await request('/song', {
      songmid
    })
    this.setData({
      songInfo //获取歌曲的详情
    })
    // console.log(songInfo);
    // 设置动态页面标题
    wx.setNavigationBarTitle({
      title: songInfo.data.extras.name
    })
    // 拿到保存的songmid数组并添加一个songmid
    let song = this.data.song
    song.push(songmid)
    this.setData({
      song,
      songimage: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${songInfo.data.track_info.album.mid}.jpg`
    })

// 定义全局播放状态
this.appInstance = getApp()
// 定义当前播放状态
if(this.appInstance.globalData.isMusicPlay && this.appInstance.globalData.musicIdL == this.data.song[0] ){
  this.setData({
    isswitch:false
  })
}

  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})